package dletc.service;

import dletc.pojo.Customer;

public class CustomerList { 

	// v 控制层  实现 增 删 改 查 功能
	//定义一个存放用户信息的数组，模拟数据库的作用
	Customer[] customers;
	
	//定义一个统计数组里有几个客户信息的变量
	private int total;

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	//无参构造
	public CustomerList() {
		
	}

	/**
	 * 创建一个有参构造，赋值数组的长度
	 * @param length 赋值数组的长度
	 */
	public CustomerList(int length){
		customers = new Customer[length];
	}
	
	/**
	 * 创建一个增加数组的方法
	 * @param customer 参数是要添加的对象
	 * @return true 添加成功 ，false 添加失败
	 */
	public boolean addCustomer(Customer customer){
		
		//先判断数组是否满了
		if(total >= customers.length){
			return false;
		}
		
		//没满进行存储
		customers[total] = customer;
		
		//更新total
		total++;
		return true;
	}
	
	/**
	 * 创建一个修改数据的方法
	 * @param index  数组的索引
	 * @param customer 一个客户的对象
	 * @return
	 */
	public boolean replaceCustomer(int index,Customer customer ){
		
		// 判断index值范围 是否正常
		if(index < 0 || index > total){
			return false;
		}
		//index值 正常 则替换数据
		customers[index] = customer;
		return true;
	}
	
	/**
	 * 创建一个删除数据的方法
	 * @param index
	 * @return
	 */
	public boolean delCustomer(int index){
		
		//判断index值范围 是否正常
		if(index < 0 || index > total){
			return false;
		}
		/*for(int i = 0; i < customers.length; i++){
			if(i == index){
				customers[i] = customers[i + 1];
			}
		}*/
		//删除相应的值 index就是索引 直接让i等于index 后面的元素 前移 
		//长度也是total 不是length  因为删了一个元素 所以前移的元素个数为：total-1 
		for(int i = index; i < total - 1; i++){
			customers[i] = customers[i + 1];
		}
		// 最后一个元素 需要赋默认值  不能是length-1 因为不知道是不是数组的最后一位 
		//customers[customers.length - 1] = null; 
		//total为个数  也就是长度
		customers[total - 1] = null;
		//删除一个元素 total值相应改变
		total--;
		
		return true;
	}
	
	/**
	 * 创建一个查询所有数据的方法
	 * @return
	 */
	public Customer[] getAll(){
		
		
		Customer[] custs = new Customer[total];
		for (int i = 0; i < custs.length; i++) {
			custs[i] = customers[i];
		}
		return custs;
		
	}
	
	/**
	 * 创建一个根据索引查数据的方法
	 * @param index
	 * @return
	 */
	public Customer getIndex(int index){
		
		//判断index值范围 是否正常
		if(index < 0 || index > total){
			return null;
		}
		
		return customers[index];
		
	}
}
